

#ifndef _zrxkernel_h
#define _zrxkernel_h 1

#include "zrxsrvice.h"
#pragma pack (push, 8)

class UcRxClass;
class UcRxDictionary;

class ZSOFT_NO_VTABLE UcRxKernel : public UcRxService
{
public:
    UCRX_DECLARE_MEMBERS(UcRxKernel);
    UcRxKernel();
    virtual ~UcRxKernel();

    virtual
    UcRxDictionary* newUcRxDictionary(ZSoft::Boolean sorted = ZSoft::kTrue,
                                      ZSoft::Boolean ignoreCase
                                                           = ZSoft::kFalse) = 0;

    virtual
    UcRxDictionary* newUcRxDictionary(ZSoft::UInt32 length,
                                      ZSoft::Boolean delObjects,
                                      ZSoft::Boolean sorted = ZSoft::kTrue,
                                      ZSoft::Boolean ignoreCase
                                                           = ZSoft::kFalse) = 0;

    virtual
    UcRxDictionary* newUcRxDictionary(const UcRxClass * filter) = 0;
};

#define ucrxKernel \
    UcRxKernel::cast(UcRxDictionary::cast(\
    ucrxSysRegistry()->at(UCRX_SERVICE_DICTIONARY))->at(UCRX_KERNEL_SERVICES))

#pragma pack (pop)
#endif
